package com.yjkf.zh.test.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/**
 * Callable定义的时候可以设置一个泛型，此泛型的类型就是返回的数据类型
 * Runnable是在JDK1.0的时候提出的多线程接口，而callable是在1.5之后提出的
 * runnable只提供一个run()方法，没有返回值
 * Callable接口提供call()方法，有返回值
 */
public class MyCallable {
    public static void main(String[] args) throws Exception{
        FutureTask<String> task = new FutureTask<>(new MyCallableTest()) ;
        new Thread(task).start();
        System.out.println("线程返回数据"+task.get());
    }
}

class MyCallableTest implements Callable<String> {

    @Override
    public String call() throws Exception {
        for(int x=0;x<10;x++){
            System.out.println("线程执行"+x);
        }
        return "线程执行完毕。";
    }
}
